package algo3.algocity.vista;

import java.awt.Color;
import java.awt.Graphics;

import algo3.algocity.modelo.centrales.CentralEolica;
import algo3.algocity.modelo.centrales.CentralMineral;
import algo3.algocity.modelo.centrales.CentralNuclear;
import algo3.algocity.modelo.conectores.LineaDeTension;
import algo3.algocity.modelo.conectores.Ruta;
import algo3.algocity.modelo.conectores.TuberiaDeAgua;
import algo3.algocity.modelo.construibles.EstacionDeBomberos;
import algo3.algocity.modelo.construibles.PozoDeAgua;
import algo3.algocity.modelo.edificios.Comercial;
import algo3.algocity.modelo.edificios.Industrial;
import algo3.algocity.modelo.edificios.Residencial;
import algo3.algocity.modelo.interfaces.Construccion;
import algo3.algocity.modelo.interfaces.MegaConstruccion;
import algo3.algocity.modelo.interfaces.MiniConstruccion;
import algo3.algocity.modelo.mapa.Coordenada;
import algo3.algocity.modelo.mapa.Hectarea;

public class Dibujante {

	public static final int ANCHO_DE_COLUMNA_MEGACONSTRUCCION = 15;
	public static final int ANCHO_DE_FILA_MEGACONSTRUCCION    = 15;
	public static final int ANCHO_DE_COLUMNA_MINICONSTRUCCION = 15;
	public static final int ANCHO_DE_FILA_MINICONSTRUCCION = 15;
	
	public void dibujarMega(Graphics g,Construccion megaConstruccion){
		
		if(megaConstruccion instanceof Residencial){
	  
			Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
			
			Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
	  
			g.setColor(Color.blue);
			g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
	  
			g.setColor(Color.white);
			g.drawString("R", coordDimensionada.obtenerPosicionX()+10, coordDimensionada.obtenerPosicionY()+20);
		 
		}
	
		if(megaConstruccion instanceof Comercial){
		  
			Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
			Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
			g.setColor(Color.cyan);
			g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  	
			g.setColor(Color.black);
			g.drawString("C", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}
	
		if(megaConstruccion instanceof Industrial){

		  Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("I", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}
	
		if(megaConstruccion instanceof CentralNuclear){
		
		  Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("CN", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}
	
		if(megaConstruccion instanceof CentralMineral){
		
		  Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("CM", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}
	
		if(megaConstruccion instanceof CentralEolica){
		
		  Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("CE", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}

		if(megaConstruccion instanceof PozoDeAgua){
			  
		  Coordenada coordenada = megaConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("PA", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
		}
	}	

	public void dibujarMiniSuperficiales(Graphics g,MiniConstruccion miniConstruccion){
		
		 if(miniConstruccion instanceof Ruta){
			  
			 Coordenada coordenada = miniConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
			 Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MINICONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MINICONSTRUCCION);
		  
			 g.setColor(Color.gray);
			 g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
			 g.setColor(Color.black);
			 g.drawString("R", coordDimensionada.obtenerPosicionX()+3, coordDimensionada.obtenerPosicionY()+5);
		 }
	
		 if(miniConstruccion instanceof LineaDeTension){
			 System.out.println("entro aca");
			 Coordenada coordenada = miniConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
			 Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MINICONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MINICONSTRUCCION);
		  
			 g.setColor(Color.white);
			 g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
			 g.setColor(Color.black);
			 g.drawString("LT", coordDimensionada.obtenerPosicionX()+3, coordDimensionada.obtenerPosicionY()+5);
		  }
	
	}
	
	public void dibujarEstacionesDeBomberos(Graphics g,EstacionDeBomberos estacionDeBomberos ){
		
		  Coordenada coordenada = estacionDeBomberos.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		  Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MEGACONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MEGACONSTRUCCION);
		  
		  g.setColor(Color.cyan);
		  g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
		  
		  g.setColor(Color.black);
		  g.drawString("EB", coordDimensionada.obtenerPosicionX()+7, coordDimensionada.obtenerPosicionY()+7);
	}
	
	public void dibujarTuberiasDeAgua(Graphics g,MiniConstruccion miniConstruccion){
		
		if(miniConstruccion instanceof TuberiaDeAgua){
		   
		   Coordenada coordenada = miniConstruccion.obtenerHectareaALaQuePertenece().obtenerCoordenada();
		   Coordenada coordDimensionada = new Coordenada(coordenada.obtenerPosicionY() * ANCHO_DE_FILA_MINICONSTRUCCION, coordenada.obtenerPosicionX() * ANCHO_DE_COLUMNA_MINICONSTRUCCION);
		   
		   g.setColor(Color.red);
		   g.fillRect(coordDimensionada.obtenerPosicionX(),coordDimensionada.obtenerPosicionY(),15,15);
	  
		   g.setColor(Color.black);
		   g.drawString("TA", coordDimensionada.obtenerPosicionX()+2, coordDimensionada.obtenerPosicionY()+2);
		 }
	}
}
